﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AdaptationProject.Forms
{
    public struct ParamType
    {
        public const int UNKNOWN  = -1;
        public const int STRING   = 0;
        public const int INT      = 1;
        public const int FLOAT    = 2;
        public const int SYMBOL   = 3;
        public const int FILE     = 4;
        public const int HANDLE   = 5;
        public const int PATH     = 6;
        public const int HELPFILE = 7;
        public const int FILENAME = 8;

        static public string regExString         = @"";
        static public string regExInteger        = @"^((([+-]?\d+);?)*((((\s)?[+-]?\d+)~((\s)?[+-]?\d+)\;?)+(\s)?)*)*$";
        static public string regExFloat          = @"^(([+-]?\d+(\,|\.){1}\d+\;?)*((((\s)?[+-]?\d+(\,|\.){1}\d+)~((\s)?[+-]?\d+(\,|\.){1}\d+)\;?)+(\s)?)*)*$";
        static public string regExSymbol         = @"^(((((\s)?\S{1})~((\s)?\S{1})\;?)+(\s)?)*((((\s)?\S+)\;?)+(\s)?)*)*$";
        static public string regExFile           = @"";
        static public string regExHandle         = @"";
        static public string regExPath           = @"";
        static public string regExHelpFile       = @"";
        static public string regExFileName       = @"";

        static public string regExPercent        = @"^(\d+)$";

        public const int typeSize = 9;
    };

    public class ParamName
    {
        public string[] typeName;
        public string[] fullName;
        public string[] titleName;

        public ParamName()
        {
            typeName = new string[ParamType.typeSize];
            typeName[ParamType.STRING]           = "строка";
            typeName[ParamType.INT]              = "целое/интервал целых чисел/перечисление целых чисел";
            typeName[ParamType.FLOAT]            = "вещественное/интервал вещественных чисел/перечисление вещественных чисел";
            typeName[ParamType.SYMBOL]           = "интервал символов/перечисление символов";
            typeName[ParamType.FILE]             = "полный путь файла";
            typeName[ParamType.HANDLE]           = "handle";
            typeName[ParamType.PATH]             = "путь директории";
            typeName[ParamType.HELPFILE]         = "дополнительный файл";
            typeName[ParamType.FILENAME]         = "имя алгоритма";

            fullName = new string[ParamType.typeSize];
            fullName[ParamType.STRING]           = "строку";
            fullName[ParamType.INT]              = "целое число/интервал целых чисел/перечисление целых чисел";
            fullName[ParamType.FLOAT]            = "вещественное число/интервал вещественных чисел/перечисление вещественных чисел";
            fullName[ParamType.SYMBOL]           = "интервал символов/перечисление символов";
            fullName[ParamType.FILE]             = "полный путь файла";
            fullName[ParamType.HANDLE]           = "handle";
            fullName[ParamType.PATH]             = "путь директории";
            fullName[ParamType.HELPFILE]         = "дополнительный файл";
            fullName[ParamType.FILENAME]         = "имя алгоритма";

            titleName = new string[ParamType.typeSize];
            titleName[ParamType.STRING]          = "Строка";
            titleName[ParamType.INT]             = "Целое число/Интервал целых чисел/Перечисление целых чисел";
            titleName[ParamType.FLOAT]           = "Вещественное число/Интервал вещественных чисел/Перечисление вещественных чисел";
            titleName[ParamType.SYMBOL]          = "Интервал символов/Перечисление символов";
            titleName[ParamType.FILE]            = "Полный путь файла";
            titleName[ParamType.HANDLE]          = "Handle";
            titleName[ParamType.PATH]            = "Путь директории";
            titleName[ParamType.HELPFILE]        = "Дополнительный файл";
            titleName[ParamType.FILENAME]        = "Имя алгоритма";
        }
    };
}
